<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8" />
		<title>数组的reduce方法</title>
	</head>
	<body>
		<script type="text/javascript" >
			/* 
				语法：
					arr.reduce((preValue, current, index, arr) => {} ,initialValue)

				参数说明
						preValue		 : 第一次执行回调时为给定的初始值initialValue，以后是上一次执行回调时的返回值。
														备注：若没有传入initialValue，则第一次的preValue值是数组中第一个元素的值。
						current			 : 表示当前正在处理的元素；
						initialValue : 表示初始值，若想筛选最值可以不传。
						arr					 : 当前操作的数组
						index				 : 表示当前正在处理的数组元素的索引，若传入了initialValue值，则为0，否则为1；
			*/
			let arr = [2,2,3,4,55,6,7,8,9]

			//累计计算
			const result1 = arr.reduce((preValue,current)=>{
				return preValue + current
			})

			//条件统计（奇数有几个）
			const result2 = arr.reduce((preValue,current)=>{
				return preValue + (current % 2 ? 1 : 0)
			},0)

			//条件计算（所有奇数的和）
			const result3 = arr.reduce((preValue,current)=>{
				return preValue + (current % 2 ? current : 0)
			},0)

			//筛选最值
			const result4 = arr.reduce((preValue,current)=>{
				return Math.max(preValue,current)
			})


			console.log(result4)



		</script>
	</body>
</html>